package cn.xxi.ai.file.entity;

import cn.xxi.ai.common.entity.BaseEntity;
import cn.xxi.ai.file.constant.Purpose;
import cn.xxi.ai.file.storage.MinioStorage;
import lombok.Data;
import org.springframework.util.StringUtils;

import java.io.Serializable;

/**
 * 文件实体类
 * 
 * @author bingo
 */
@Data
public class File extends BaseEntity implements Serializable {

    /** 文件名 */
    private String name;

    /** 文件路径（唯一） */
    private String path;

    /** 文件用途（枚举） */
    private Purpose purpose;

    /** 文件大小（单位：字节） */
    private Long size;

    /** 文件扩展名 */
    private String extension;

    /** 内容类型（如 image/png, application/pdf） */
    private String contentType;

    /** 文件哈希（用于去重） */
    private String hash;

    /** 是否已被使用 */
    private Boolean used;

    /** 动态生成文件访问 URL */
    public String getUrl() {
        return StringUtils.hasText(path) ? MinioStorage.getUrl(path) : null;
    }
}
